<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Producto_lst( $this );

	class Producto_lst extends Lst
	{
	function Producto_lst( &$oModule )
		{
			$this->Lst( $oModule );
		}
	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'E':
				case 'C':
					$this->aShowColumns = array( 'Nombre', 'Tipo' );
					break;
				case 'L':
					$this->aShowColumns = array( 'Nombre', 'Saldo' );
					break;
			}
		}
	function initialize()
		{
			$this->oFiltro = $this->oModule->loadClass( 'Producto_frm' );
			$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
			
			$this->setTitle ( "Producto" );
			$this->setSummary( "Esta tabla contiene los Productos" );
			$this->addColumnAction ( 'Nombre', VER_PRODUCTO, 'ncProducto', 'cdProducto' );
			$this->addColumn ( 'Cantidad', 'nqStock', true );
			$this->addColumn ( 'Ingresos' );
			$this->addColumn ( 'Egresos' );
			$this->addColumn ( 'Saldo' );
			$this->addColumn ( 'Tipo', 'cdTipoProducto' );
			$this->addColumn ( 'Tipo', 'cdTipoProducto' );
			$this->addColumn('Claves', 'cPalabrasClave');
			$this->addColumn( 'Peso', 'nPeso');
			$this->addColumn( 'Version', 'nVersion') ;
			$this->addColumn( 'Dimensiones', '') ;
			$this->addColumn( 'Idiomas', '') ;
			$this->setColumnAction ( 'Ingresos', CONSULTAR_INGRESOS, 'ncProducto' , "bConfirmado=0");
			$this->setColumnAction ( 'Egresos', CONSULTAR_EGRESOS, 'ncProducto' , "bConfirmado=0");
		}
	function makeColumn ( $aRow, $cField )
	{
		switch( $cField )
		{
			case 'Idiomas':
				$cReturn = implode( ',', $this->oDatabase->getArray("SELECT cdIdioma FROM gtProductoIdioma as PId JOIN acIdioma as Idi ON Idi.ncIdioma = PId.ncIdioma  WHERE ncProducto = " . $aRow['ncProducto'] ) );
				break;
			case 'Dimensiones':
				$cReturn = $aRow['nAlto'] . " cm x " . $aRow['nAncho'] . " cm ";
				if ( $aRow['nLargo'] )  $cReturn .= ' x ' . $aRow['nLargo'] . " cm ";
				break;
			case 'Ingresos':
				$cReturn = $aRow['nqIngresos'] = $this->oDatabase->getData( "SELECT SUM(nqProducto) FROM gtMovimientoProducto WHERE ncTipoOrden = " . TIPO_ORDEN_INGRESO . " AND bConfirmado = 0 AND ncProducto = " . $aRow['ncProducto']);
				break;
			case 'Saldo':
				$cReturn = $aRow['nqStock'] + $aRow['nqIngresos'] + $aRow['nqEgresos'];
				break;
			case 'Egresos':
				$cReturn = $aRow['nqEgresos'] = $this->oDatabase->getData( "SELECT SUM(nqProducto) FROM gtMovimientoProducto WHERE ncTipoOrden = " . TIPO_ORDEN_EGRESO . " AND bConfirmado = 0 AND ncProducto = " . $aRow['ncProducto']);
				break;
			default:
					return false;
				break;
		}
		return $cReturn;
	}
	function makeRowProperties ( $aRow )
		{
			if ( $aRow['nqStock'] < $aRow['nqReposicion'] ) return " style='color: red;' ";
		}
	function query()
		{
			// Arma el Query
				$cSql = "SELECT Pro.ncProducto, Pro.cdProducto, Pro.nqStock, Pro.nqReposicion
												FROM gtProducto as Pro
											LEFT JOIN gcTipoProducto as TPr
												ON TPr.ncTipoProducto = Pro.ncTipoProducto";
			// Arma Join Dinamico
				$cSql .= armarJoin ( " JOIN gtProductoIdioma as PId ON PId.ncProducto = Pro.ncProducto AND PId.ncIdioma = " . $ncIdioma, $ncIdioma );
			// Arma el Filtro de la Consulta
				$this->oFiltro->setDefaultSearchField( "cdProducto" );
				$this->oWhere->addArray ( $this->oFiltro->getFilterdArray('Pro') );
				$this->oWhere->addKey ( $this->oDatabase->dbConcat( "' '", "cPalabrasClave" ), $cPalabrasClave );
				return $cSql . $this->oWhere->make();
		}
	function makeListActions()
		{
			$cParametroRegistro =  $this->getFieldString();
			$this->addListAction ( AGREGAR_UN_PRODUCTO, $cParametroRegistro, 'I' , VENTANA_SECUNDARIA);
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro =  "ncProducto=" . $aRow["ncProducto"] ;
			$this->addRowAction ( MODIFICAR_UN_PRODUCTO, $cParametroRegistro );
			$this->addRowAction ( ELIMINAR_UN_PRODUCTO, $cParametroRegistro);
		}
	}
?>
